﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Serialization;

namespace DeckOfCards.Domain
{
    
    class  Mazzo
    {

        DefinizioneMazzo Definizione;

        /// <summary>
        /// 
        /// </summary>
        /// <param name="Def"></param>
        /// <returns></returns>
        public Mazzo (DefinizioneMazzo Def)
        {
            Carte = new List<Carta>();
            Definizione = Def;
        }

        public Mazzo()
        {
            Carte = new List<Carta>();
        }

        private List<Carta> Carte
        {
            get;
            set;
        } 

        public void AggiungereCarta(Carta NuovaCarta)
        {
            if(Carte==null)
            {
                Carte = new List<Carta>();
            }
            else
            {


                
                if(Carte.Exists(x => x.Equals(NuovaCarta)))
                {
                    //non si puo!!! (se non abbiamo una defizione di carte duplicate...)
                    throw new InvalidOperationException();
                }
                else
                {
                    //si puo!!!
                    Carte.Add(NuovaCarta);
                }

            }
        }

        /*

        public void Shuffle(){

        }

        public Card Deal() {
            return null; 
        }
        public List<Card> Deal(int cards) { 
            return new List<Card>();
        }
          
        */




        public IComparable Count
        {
            get
            {
                if (Carte == null)
                    return 0;
                else
                    return Carte.Count;
            }
        }

    }
}
